/*******************************************************************************
 * Themes, rules, and i18n support Locale: Chinese; 中文
 ******************************************************************************/
(function(factory) {
	if (typeof define === 'function') {
		define(function(require, exports, module) {
			var $ = require('jquery');
			$._VALIDATOR_URI = module.uri;
			require('../src/jquery.validator')($);
			factory($);
		});
	} else {
		factory(jQuery);
	}
}(function($) {
	/*
	 * Global configuration
	 */
	$.validator.config({
		// stopOnError: false,
		// theme: 'yellow_right',
		defaultMsg : "{0}格式不正确",
		loadingMsg : "正在验证...",

		// Custom rules
		rules : {
			digits : [ /^\d+$/, "请输入数字" ],
			letters : [ /^[a-z]+$/i, "{0}只能输入字母" ],
			tel : [ /^(?:(?:0\d{2,3}[\- ]?[1-9]\d{6,7})|(?:[48]00[\- ]?[1-9]\d{6}))$/, "电话格式不正确" ],
			mobile : [ /^1[3-9]\d{9}$/, "手机号格式不正确" ],
			email : [ /^[\w\+\-]+(\.[\w\+\-]+)*@[a-z\d\-]+(\.[a-z\d\-]+)*\.([a-z]{2,4})$/i, "邮箱格式不正确" ],
			ID_card : [ /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/, "请输入正确的身份证号码" ],
			url : [ /^(https?|ftp):\/\/[^\s]+$/i, "网址格式不正确" ],
			username : [ /^\w{3,12}$/, "请输入3-12位数字、字母、下划线" ],
			accept : function(element, params) {
				if (!params)
					return true;
				var ext = params[0];
				return (ext === '*') || (new RegExp(".(?:" + (ext || "png|jpg|jpeg|gif") + ")$", "i")).test(element.value) || this.renderMsg("只接受{1}后缀", ext.replace('|', ','));
			}

		}
	});

	/*
	 * Default error messages
	 */
	$.validator.config({
		messages : {
			required : "{0}不能为空",
			remote : "{0}已被使用",
			integer : {
				'*' : "请输入整数",
				'+' : "请输入正整数",
				'+0' : "请输入正整数或0",
				'-' : "请输入负整数",
				'-0' : "请输入负整数或0"
			},
			match : {
				eq : "{0}与{1}不一致",
				neq : "{0}与{1}不能相同",
				lt : "{0}必须小于{1}",
				gt : "{0}必须大于{1}",
				lte : "{0}必须小于或等于{1}",
				gte : "{0}必须大于或等于{1}"
			},
			range : {
				rg : "请输入{1}到{2}的数",
				gte : "请输入大于或等于{1}的数",
				lte : "请输入小于或等于{1}的数"
			},
			checked : {
				eq : "请选择{1}项",
				rg : "请选择{1}到{2}项",
				gte : "请至少选择{1}项",
				lte : "请最多选择{1}项"
			},
			length : {
				eq : "请输入{1}个字符",
				rg : "请输入{1}到{2}个字符",
				gte : "请至少输入{1}个字符",
				lte : "请最多输入{1}个字符",
				eq_2 : "",
				rg_2 : "",
				gte_2 : "",
				lte_2 : ""
			}
		}
	});

	/*
	 * Themes
	 */
	var TPL_ARROW = '<span class="n-arrow"><b>◆</b><i>◆</i></span>';
	$.validator.setTheme({
		'simple_right' : {
			formClass : 'n-simple',
			msgClass : 'n-right'
		},
		'simple_bottom' : {
			formClass : 'n-simple',
			msgClass : 'n-bottom'
		},
		'yellow_top' : {
			formClass : 'n-yellow',
			msgClass : 'n-top',
			msgArrow : TPL_ARROW
		},
		'yellow_right' : {
			formClass : 'n-yellow',
			msgClass : 'n-right',
			msgArrow : TPL_ARROW
		},
		'yellow_right_effect' : {
			formClass : 'n-yellow',
			msgClass : 'n-right',
			msgArrow : TPL_ARROW,
			msgShow : function($msgbox, type) {
				var $el = $msgbox.children();
				if ($el.is(':animated'))
					return;
				if (type === 'error') {
					$el.css({
						left : '20px',
						opacity : 0
					}).delay(100).show().stop().animate({
						left : '-4px',
						opacity : 1
					}, 150).animate({
						left : '3px'
					}, 80).animate({
						left : 0
					}, 80);
				} else {
					$el.css({
						left : 0,
						opacity : 1
					}).fadeIn(200);
				}
			},
			msgHide : function($msgbox, type) {
				var $el = $msgbox.children();
				$el.stop().delay(100).show().animate({
					left : '20px',
					opacity : 0
				}, 300, function() {
					$msgbox.hide();
				});
			}
		}
	});
}));